#include <stdio.h>

int main() {
    // 定义一个二维整型数组
    int arr[3][4] = {
        {1, 2, 3, 4},
        {5, 6, 7, 8},
        {9, 10, 11, 12}
    };
    
    // 定义一个指向整型的指针
    int *ptr;
    int (*p)[4];

    p = arr;
    printf("p = %d\n", *(*p +1));
    printf("*(arr + 1) = %d\n", *(*(arr + 1)));
    printf("*(arr + 1) + 2 = %d\n", *(*(arr + 1) + 2));
    
    // 将指针指向二维数组的第一个元素
    ptr = &arr[0][0];
    
    // 打印二维数组元素和对应的指针值
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 4; j++) {
            printf("arr[%d][%d] = %d, ptr + %d = %d\n", i, j, arr[i][j], i * 4 + j, *(ptr + i * 4 + j));
        }
    }
    
    return 0;
}
